package util;

/**
 * Hyper-parameters to adjust the model.
 * 
 * 模型相关的参数。
 * 
 * @author TianyuXu
 * 
 */
public final class Params {
	// parameters for training model
	// 训练模型调节参数
	public final static int WINDOW_SIZE = 3;
	public final static int HIDDEN_LAYER_SIZE = 300;
	public final static int SIGMOID = 0;
	public final static int HARD_TANH = 1;
	public final static int NONLINEAR_FUNC_TYPE = SIGMOID;
	public final static double LEARNING_RATE = 0.01;
	public final static double VITERBI_LEARNING_RATE = 0.1;
	// public final static double LAMBDA = 0.001;
	public final static double DISCOUNT = 0.2;
	public final static double VALUE_MAX = Math.sqrt(Double.MAX_VALUE) * DISCOUNT;
	public static final int MAX_ITERATION = 100;
	public static final double PRECISION_THRESHOLD = 0.98;

	// parameters for word feature vector
	// 字符特征向量参数
	public final static int POS_TAG_NUM = 120;
	public final static int SRL_TAG_SIZE = 21;
	public final static int WORD_FEATURE_SIZE = 50;
	public final static int POS_FEATURE_SIZE = POS_TAG_NUM;
	public final static int TRAINABLE_VECTOR_SIZE = WORD_FEATURE_SIZE + POS_FEATURE_SIZE;
	public final static int FEATURE_VECTOR_SIZE = TRAINABLE_VECTOR_SIZE + 2;
	public final static int WINDOW_FEATURE_SIZE = WINDOW_SIZE * FEATURE_VECTOR_SIZE;
	public final static int PADDING_SIZE = (WINDOW_SIZE - 1) / 2;
	public final static char LEFT_PADDING_CHAR = '╠';
	public final static String LEFT_PADDING_STRING = LEFT_PADDING_CHAR + "         S-PU      O         ";
	public final static char RIGHT_PADDING_CHAR = '╣';
	public final static String RIGHT_PADDING_STRING = RIGHT_PADDING_CHAR + "         S-PU      O         ";

	// parameters for input/output
	// 输入/输出相关参数
	public static String CHAR_LIST_PATH = null;
	public static String TRAIN_FILE_LIST_PATH = null;
	public static String TEST_FILE_LIST_PATH = null;
	public final static String REAL_NUM_FORMAT = "%7.2f";

	// parameters for debug
	// debug参数
	public final static boolean PRINT_VITERBI_INIT_PARAM = false;
	public final static boolean PRINT_VITERBI_PARAM = false;
}
